home *** CD-ROM | disk | FTP | other *** search
/ Netware Super Library / Netware Super Library.iso / pgm_tool / lu62 / proc / fsender.c < prev    next >
C/C++ Source or Header  |  1995-07-03  |  2KB  |  79 lines

  1. /*
  2.  * CopyRight 1995. Nicholas Poljakov all rights reserved.
  3.  */
  4. #include <malloc.h>
  5. #include <stdio.h>
  6. #include <dos.h>
  7. #include <sender.h>
  8. #include <state1.h>
  9. send_error (tp_id,
  10.            conv_id,
  11.            type,
  12.            p_data,
  13.            length,
  14.            p_rc,
  15.            p_rts)
  16.  
  17.  unsigned char tp_id[8];
  18.  unsigned long conv_id;
  19.   char far     *p_data;
  20.  unsigned   int length ;
  21.  unsigned  char *p_rts  ;
  22.  unsigned  char type  ;
  23.  
  24.  struct   rc {
  25.  unsigned   int   prim ;
  26.  unsigned   long  sec  ; }  *p_rc;
  27.  
  28.          {
  29.        union REGS inregs,outregs;
  30.        struct SREGS segregs;
  31.        struct send_error *ptr;
  32.        char _near *dp1;
  33.        char _near *dp2;
  34.        int l;
  35.  
  36.      l = sizeof(struct send_error);
  37.      if ((ptr = (char *)calloc(1,l)) == NULL)
  38.        {
  39.         p_rc->prim = PORT_BUSY; /* ¡ÑΓ ñ«ßΓπ»¡«⌐ »á¼∩Γ¿ */
  40.         p_rc->sec = 0x00;
  41.         return(0);
  42.         }
  43.  
  44.     ptr->code=Send_error; /* kod primitiv */
  45.     ptr->e_cd=0x0000; /*  ex   */
  46.  
  47.     memcpy (ptr->tp_id,tp_id,8);
  48.  
  49.     ptr->conv_id = conv_id;
  50.     ptr->data_addr=p_data ;
  51.     ptr->data_lt=length   ;
  52.     ptr->type=type   ;
  53. /*
  54.      inregs.x.dx = FP_OFF(ptr);
  55.      segregs.ds = FP_SEG(ptr);
  56.      inregs.x.ax = ptr->code;
  57.  
  58.          int86x(0x68,&inregs,&outregs,&segregs);
  59.  */
  60.      dp1 = FP_OFF( ptr );
  61.      dp2 = FP_SEG( ptr );
  62.      _asm
  63.          {
  64.             push  ds
  65.             mov   dx, word ptr dp1[0]
  66.             mov   ax, word ptr dp2[0]
  67.         mov   ds, ax
  68.         mov   ax, Send_error
  69.             int   68h
  70.             pop   ds
  71.          }
  72.  
  73.     *p_rts=ptr->rts;      /* ó«ºóαáΘáѼδÑ param ó ßΓπ¬Γπαπ*/
  74.      p_rc->prim = ptr->prim_rc;
  75.      p_rc->sec  = ptr->sec_rc;
  76.                free(ptr);
  77.                return(0);
  78.          }
  79.